//js中定义方法叫函数，使用function关键字定义函数，后面跟函数名(),其中()可以包含参数。然后在 {}中写代码。调用的话，直接函数名()调用即可。
function f(){
    console.log("买瓜")
}
f()

//如何给函数添加形式参数以及返回值
function f(a){
    console.log("接受到参数" + a)
    return 666
}
f("bbb")
//由于js是动态类型，传参时不必指明参数的类型，也不必指明返回值的类型，一个函数可能返回不通类型的结果。
f()
//调用时不传参，会默认使用 undefined

//如果希望不传参时使用我们自定义的默认值,可以在形参后面指定默认值
function f(a = "666"){
    console.log("接受到参数" + a)
    return(888)
}
f()

//函数本身也是一种类型，它可以被变量接收，所有函数类型的变量，也可以直接被调用
function f1(a="6666") {
    console.log("得到的参数为" + a)
    return 8888
}

let k = f1
k()

//我们可以直接将匿名函数赋值给变量
let f = function (str) {
    console.log("实参为" + str)
}

//既然函数是一种类型，那么函数也能作为一个参数传递
function f(test) {
    test();
}

f(function () {
    console.log("这是一个匿名函数")
})

//对于所有的匿名函数，可以像java的匿名接口实现一样编写lambda表达式
function f(test) {
    test();
}
f(() => {
    console.log("可以，不多跟你bb")
})

function f(test) {
    test("这是个回调函数");
}
f(param => {
    console.log("接收到回调函数：" + param)
})
